// using UnityEngine;
//
// namespace GGameFramework.Examples.FSM
// {
//     /// <summary>
//     /// 简单的敌人控制器，用于测试玩家攻击功能
//     /// </summary>
//     public class EnemyController : MonoBehaviour
//     {
//         [Header("敌人属性")]
//         [SerializeField] private int m_MaxHealth = 100;
//         [SerializeField] private float m_MoveSpeed = 3f;
//         [SerializeField] private float m_DetectionRange = 5f;
//         [SerializeField] private float m_AttackRange = 2f;
//         
//         [Header("状态")]
//         [SerializeField] private bool m_IsAlive = true;
//         [SerializeField] private int m_CurrentHealth;
//         
//         private Transform m_PlayerTransform;
//         private Vector3 m_StartPosition;
//         private bool m_IsChasing = false;
//         
//         private void Start()
//         {
//             m_CurrentHealth = m_MaxHealth;
//             m_StartPosition = transform.position;
//             
//             // 查找玩家
//             var player = FindObjectOfType<PlayerController>();
//             if (player != null)
//             {
//                 m_PlayerTransform = player.transform;
//             }
//             
//             // 设置标签
//             gameObject.tag = "Enemy";
//         }
//         
//         private void Update()
//         {
//             if (!m_IsAlive) return;
//             
//             // 简单的AI逻辑
//             if (m_PlayerTransform != null)
//             {
//                 float distanceToPlayer = Vector3.Distance(transform.position, m_PlayerTransform.position);
//                 
//                 if (distanceToPlayer <= m_DetectionRange)
//                 {
//                     // 检测到玩家，开始追击
//                     if (!m_IsChasing)
//                     {
//                         m_IsChasing = true;
//                         Debug.Log($"{gameObject.name} 开始追击玩家");
//                     }
//                     
//                     if (distanceToPlayer <= m_AttackRange)
//                     {
//                         // 攻击玩家
//                         AttackPlayer();
//                     }
//                     else
//                     {
//                         // 追击玩家
//                         ChasePlayer();
//                     }
//                 }
//                 else
//                 {
//                     // 玩家超出检测范围，回到起始位置
//                     if (m_IsChasing)
//                     {
//                         m_IsChasing = false;
//                         Debug.Log($"{gameObject.name} 停止追击，回到起始位置");
//                     }
//                     
//                     ReturnToStartPosition();
//                 }
//             }
//         }
//         
//         /// <summary>
//         /// 追击玩家
//         /// </summary>
//         private void ChasePlayer()
//         {
//             if (m_PlayerTransform == null) return;
//             
//             Vector3 direction = (m_PlayerTransform.position - transform.position).normalized;
//             direction.y = 0; // 保持Y轴不变
//             
//             // 移动向玩家
//             transform.position += direction * m_MoveSpeed * Time.deltaTime;
//             
//             // 面向玩家
//             if (direction != Vector3.zero)
//             {
//                 transform.rotation = Quaternion.LookRotation(direction);
//             }
//         }
//         
//         /// <summary>
//         /// 回到起始位置
//         /// </summary>
//         private void ReturnToStartPosition()
//         {
//             Vector3 direction = (m_StartPosition - transform.position).normalized;
//             direction.y = 0;
//             
//             if (Vector3.Distance(transform.position, m_StartPosition) > 0.1f)
//             {
//                 transform.position += direction * m_MoveSpeed * 0.5f * Time.deltaTime;
//                 
//                 if (direction != Vector3.zero)
//                 {
//                     transform.rotation = Quaternion.LookRotation(direction);
//                 }
//             }
//         }
//         
//         /// <summary>
//         /// 攻击玩家
//         /// </summary>
//         private void AttackPlayer()
//         {
//             // 简单的攻击逻辑
//             var player = m_PlayerTransform?.GetComponent<PlayerController>();
//             if (player != null)
//             {
//                 // 随机造成伤害
//                 int damage = Random.Range(10, 20);
//                 player.TakeDamage(damage);
//                 
//                 Debug.Log($"{gameObject.name} 攻击玩家，造成 {damage} 点伤害");
//                 
//                 // 攻击后短暂后退
//                 Vector3 backDirection = (transform.position - m_PlayerTransform.position).normalized;
//                 transform.position += backDirection * 1f;
//             }
//         }
//         
//         /// <summary>
//         /// 受到伤害
//         /// </summary>
//         public void TakeDamage(int damage)
//         {
//             if (!m_IsAlive) return;
//             
//             m_CurrentHealth -= damage;
//             Debug.Log($"{gameObject.name} 受到 {damage} 点伤害，剩余生命值: {m_CurrentHealth}");
//             
//             // 受伤效果
//             StartCoroutine(HurtEffect());
//             
//             if (m_CurrentHealth <= 0)
//             {
//                 Die();
//             }
//         }
//         
//         /// <summary>
//         /// 受伤效果
//         /// </summary>
//         private System.Collections.IEnumerator HurtEffect()
//         {
//             var renderer = GetComponent<Renderer>();
//             if (renderer != null)
//             {
//                 Color originalColor = renderer.material.color;
//                 renderer.material.color = Color.red;
//                 
//                 yield return new WaitForSeconds(0.1f);
//                 
//                 renderer.material.color = originalColor;
//             }
//         }
//         
//         /// <summary>
//         /// 死亡
//         /// </summary>
//         private void Die()
//         {
//             m_IsAlive = false;
//             Debug.Log($"{gameObject.name} 死亡");
//             
//             // 死亡效果
//             var renderer = GetComponent<Renderer>();
//             if (renderer != null)
//             {
//                 renderer.material.color = Color.black;
//             }
//             
//             // 禁用碰撞器
//             var collider = GetComponent<Collider>();
//             if (collider != null)
//             {
//                 collider.enabled = false;
//             }
//             
//             // 3秒后销毁
//             Destroy(gameObject, 3f);
//         }
//         
//         /// <summary>
//         /// 获取当前生命值
//         /// </summary>
//         public int GetCurrentHealth() => m_CurrentHealth;
//         
//         /// <summary>
//         /// 获取最大生命值
//         /// </summary>
//         public int GetMaxHealth() => m_MaxHealth;
//         
//         /// <summary>
//         /// 是否存活
//         /// </summary>
//         public bool IsAlive() => m_IsAlive;
//         
//         private void OnDrawGizmosSelected()
//         {
//             // 绘制检测范围
//             Gizmos.color = Color.yellow;
//             Gizmos.DrawWireSphere(transform.position, m_DetectionRange);
//             
//             // 绘制攻击范围
//             Gizmos.color = Color.red;
//             Gizmos.DrawWireSphere(transform.position, m_AttackRange);
//             
//             // 绘制起始位置
//             if (Application.isPlaying)
//             {
//                 Gizmos.color = Color.green;
//                 Gizmos.DrawWireSphere(m_StartPosition, 0.5f);
//             }
//         }
//     }
// }
